home *** CD-ROM | disk | FTP | other *** search
- #include "SpriteTools.h"
- #include <AppleEvents.h>
- #include <Shutdown.h>
- #define Max 2
- #define oMax -2
- #define classCode 'GURL'
- #define eventID 'GURL'
- #define NetscapeID 'MOSS'
- #define homerKind 1
- #define joltKind 2
- #define rurlKind 3
- #define plungerKind 4
- #define appleKind 5
- #define microsoftKind 6
-
-
-
- void DoURL(SpritePtr whichSprite);
- extern Boolean killed;
-
- Str255 url;
- GrafPtr homerFace, appleFace, randomFace, microsoftFace, joltFace, plungerFace;
- Str255 gURL, myURL;
-
- short Multiple;
- Boolean Dead = false;
-
- void MoveSprite(SpritePtr theSprite)
- {
- EventRecord theEvent;
- char temp;
- if(theSprite->face == homerFace)
- {
- if(GetOSEvent(keyDownMask + autoKeyMask, &theEvent))
- {
- temp = (char)BitAnd(theEvent.message, charCodeMask);
- switch (temp)
- {
- case '4':
- theSprite->speed.h += -1;
- if(theSprite->speed.h < -1)
- {
- theSprite->speed.h = -1;
- }
- break;
-
- case '6':
- theSprite->speed.h += 1;
- if(theSprite->speed.h > 1)
- {
- theSprite->speed.h = 1;
- }
- break;
-
- case '8':
- theSprite->speed.v += -1;
- if(theSprite->speed.v < -1)
- {
- theSprite->speed.v = -1;
- }
- break;
-
- case '2':
- theSprite->speed.v += 1;
- if(theSprite->speed.v > 1)
- {
- theSprite->speed.v = 1;
- }
- break;
- }
- }
- }
-
- theSprite->position.h += theSprite->speed.h;
- theSprite->position.v += theSprite->speed.v;
- KeepOnScreen(theSprite);
-
- }
-
- void HitSprite(SpritePtr theSprite, SpritePtr anotherSprite)
- {
- if (anotherSprite->kind == homerKind)
- {
- theSprite->face = nil;
- CopyBits(&gOffScreen->portBits, &myWindow->portBits, &theSprite->drawingRect, &theSprite->drawingRect, srcCopy, nil);
- DoURL(theSprite);
- DisposeSprite(theSprite);
- //DoNewFood();
-
- }
- if (theSprite->kind == homerKind)
- {
- theSprite->face = nil;
- CopyBits(&gOffScreen->portBits, &myWindow->portBits, &theSprite->drawingRect, &theSprite->drawingRect, srcCopy, nil);
- DoURL(anotherSprite);
- DisposeSprite(anotherSprite);
- //DoNewFood();
-
- }
- if (theSprite->kind != homerKind && anotherSprite->kind != homerKind)
- {
-
- }
- }
-
- void DoURL(SpritePtr whichSprite)
- {
- short crap;
- OSErr err;
- long targetSig = 'MOSS',finderSig = 'MACS';
- AEAddressDesc targetAddrDesc = {typeNull, nil},finderAddressDesc = {typeNull,NULL};
- AppleEvent event = {typeNull, nil}, shutEvent = {typeNull,NULL};
- AppleEvent reply = {typeNull, nil}, shutReply = {typeNull,NULL};
- // AEKeyword theKeyWord;
- AEDesc myDesc;
-
- switch(whichSprite->kind)
- {
- case joltKind:
- GetIndString(url,128,4);
- break;
-
- case rurlKind:
- crap = Rand(40);
- GetIndString(url,129,crap);
- break;
-
- case plungerKind:
- GetIndString(url,128,1);
- break;
-
- case appleKind:
- GetIndString(url,128,2);
- break;
-
- case microsoftKind:
- killed = true;
- ShutDwnPower();
- return;
- break;
- }
- killed = true;
-
- err = AECreateDesc(typeApplSignature,
- (Ptr)(&targetSig), sizeof (targetSig), &targetAddrDesc);
- err = AECreateAppleEvent('GURL', 'GURL', &targetAddrDesc,
- kAutoGenerateReturnID, kAnyTransactionID, &event);
- err = AEPutKeyPtr(&event, keyDirectObject, typeChar,
- &url[1], url[0]);
- err = AESend(&event, &reply, kAENoReply, kAEHighPriority,
- kAEDefaultTimeout, NULL, NULL);
- /*
- if (err == -609)
- {
- err = AECreateDesc(typeApplSignature,
- (Ptr)(&targetSig), sizeof (finderSig), &finderAddressDesc);
- err = AECreateAppleEvent('GURL', 'GURL', &tfinderAddressDesc,
- kAutoGenerateReturnID, kAnyTransactionID, &event);
- err = AEPutKeyPtr(&event, keyDirectObject, typeChar,
- &url[1], url[0]);
- err = AESend(&event, &reply, kAENoReply, kAEHighPriority,
- kAEDefaultTimeout, NULL, NULL);*/
-
- }
- void InitSprites()
- {
- SpritePtr theSprite;
-
- homerFace = LoadFaceFromCicn(128);
- joltFace = LoadFaceFromCicn(129);
- randomFace = LoadFaceFromCicn(130);
- plungerFace = LoadFaceFromCicn(131);
- appleFace = LoadFaceFromCicn(132);
- microsoftFace = LoadFaceFromCicn(133);
- theSprite = NewSprite();
- theSprite->face = homerFace;
- SetPt(&theSprite->position, Rand(425), Rand(325));
- SetPt(&theSprite->speed, 0, 0);
- theSprite->kind = homerKind;
- DoNewFood();
- DoNewFood();
- }
-
- void DoNewFood()
- {
- SpritePtr theSprite;
- short number;
-
- number = Rand(10);
- if(number == 0)
- {
- theSprite = NewSprite();
- theSprite->face = joltFace;
- SetPt(&theSprite->position, Rand(425), Rand(325));
- SetPt(&theSprite->speed, Rand(1+3), Rand(1+3));
- theSprite->kind = joltKind;
- }
- if(number == 1)
- {
- theSprite = NewSprite();
- theSprite->face = plungerFace;
- SetPt(&theSprite->position, Rand(425), Rand(325));
- SetPt(&theSprite->speed, Rand(1+3), Rand(1+3));
- theSprite->kind = plungerKind;
- }
- if(number == 2)
- {
- theSprite = NewSprite();
- theSprite->face = appleFace;
- SetPt(&theSprite->position, Rand(425), Rand(325));
- SetPt(&theSprite->speed, Rand(1+3), Rand(1+3));
- theSprite->kind = appleKind;
- }
- if(number == 3 || number == 4)
- {
- theSprite = NewSprite();
- theSprite->face = microsoftFace;
- SetPt(&theSprite->position, Rand(425), Rand(325));
- SetPt(&theSprite->speed, .5, 5.);
- theSprite->kind = microsoftKind;
- }
- if(number > 4)
- {
- theSprite = NewSprite();
- theSprite->face = randomFace;
- SetPt(&theSprite->position, Rand(425), Rand(325));
- SetPt(&theSprite->speed, Rand(1+3), Rand(1+3));
- theSprite->kind = rurlKind;
- }
- }